/**
 * \file kernel/include/types.h
 * \author Davide Gessa
 * \date 10-12-09
 */
#ifndef TYPES_H
#define TYPES_H

#define true	1
#define false	0
#define NULL	0

typedef unsigned char 	     u_char;
typedef unsigned int 	     u_int;
typedef unsigned int 	     u_int32;
typedef unsigned short       u_int16;
typedef signed char          int8_t;
typedef unsigned char        uint8_t;
typedef short                int16_t;
typedef unsigned short       uint16_t;
typedef int                  int32_t;
typedef unsigned             uint32_t;
typedef long long            int64_t;
typedef unsigned long long   uint64_t;
typedef unsigned char        byte;
typedef unsigned short int   word;
typedef unsigned int         dword;
typedef unsigned long long   qword;
typedef unsigned 	     	 size_t;
typedef int32_t				 gid_t;
typedef int32_t				 uid_t;
typedef int32_t				 pid_t;

/**
 * Struttura dei registri della cpu (da spostare nell'area dedicata 
 * alle architetture)
 */
typedef struct
{
	uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
	uint32_t ds, es, fs, gs;
	uint32_t which_int, err_code;
	uint32_t eip, cs, eflags, user_esp, user_ss;
} __attribute__((packed)) regs_t;

#endif
